package leecode

func getIntersectionNode(headA, headB *ListNode) *ListNode {
	//创建两个链表的虚拟头节点
	dummyA := &ListNode{Next: headA}
	dummyB := &ListNode{Next: headB}
	dummyHeadA := dummyA
	dummyHeadB := dummyB
	for dummyHeadA != dummyHeadB {
		if dummyHeadA != nil {
			dummyHeadA = dummyHeadA.Next
		} else {
			//如果两个链表中A已经遍历完毕,使A指向B的头节点
			dummyHeadA = headB
		}
		if dummyHeadB != nil {
			dummyHeadB = dummyHeadB.Next
		} else {
			dummyHeadB = headA
		}
	}
	return dummyHeadA
}
